SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paEjecutarAltasDeServicios]
-- <DESCRIPCION> Realizar el Alta de Servicio para un agente a partir de un Código de Cola (tbColaDeMovimientos)
-- <CONSIDERACIONES ESPECIALES>  Alta de Incrementos de Horas y Situaciones Extraordinarias y Actualizacion de dueño actual y ultimo docente
-- <TABLAS> tb_ServiciosAgentes, tb_SubServiciosAgentes, tb_ColaDeMovimientos, tb_PlazasDeMovimiento, tb_RelInterServivcios, tb_Movimientos, tb_Plazas
-- <ACTUALIZACIONES> 21/ 07/ 2006 por OTERO, Javier. (para que Asigne Norma de Baja cuando el alta incluye baja)
--	 		06/12/2007 se quito ya que se cambio la manera de obtener el lugar de pago de los conceptos 12,33 y 36
-- <ACTUALIZACIONES> 21/ 04/ 2009 por OTERO, Marcelo y SANES Jorge. (Se mejoro manejo de transacciones)
-- <ACTUALIZACIONES> 06 - 05 - 2009 por OTERO, Marcelo y SANES,  Jorge, Se agrego Manejo de Transacciones 
-- <ACTUALIZACIONES> 06 - 03 - 2010 por OTERO, Marcelo y SANES,  Jorge, (Ajustes en Alta por Transferencia y baja automatica del servicio relacionado) 
-- <ACTUALIZACIONES> 26 - 03 - 2010 por OTERO, Marcelo y SANES,  Jorge, (Ajustes en Alta por Transferencia, ahora agregamos el manejo de algunos servicios a bajar automaticamente que estan de Licencia pidio PD)
-- <ACTUALIZACIONES> 05 - 04- 2010  por OTERO, Marcelo y SANES,  Jorge, (Alta automatica con Licencia cuando el servicio a bajar esta de licencia SGH)


-- ACTUALIZADO EN DB
--21/07/2006 - SANES, Jorge

@idCola INT,
@AsignarNorma BIT,
@SubServicioDeLaNorma INT OUTPUT,
@EsForzado BIT
AS

SET NOCOUNT ON

BEGIN TRANSACTION EjecutarAltaServicio

-- Empleo de Errores para Transacciones
DECLARE @Error INT 
-- Codigo del Agente a afectar al Servicio
DECLARE @Agente INT
-- Código de la Plaza a ocupar. Se asigna en el CURSOR xPlazas
DECLARE @Plaza INT
-- Fecha del movimiento. (De la Cola de Movimientos)
DECLARE @Fecha datetime
-- Organizacion. (De la Cola de Movimientos)
DECLARE @Organizacion INT
-- Responsable. (De la Cola de Movimientos)
DECLARE @REsponsable INT
-- Fecha de Inicio del Servicio
DECLARE @Fecha1 DATETIME
-- Fecha de Fin del Servicio
DECLARE @Fecha2 DATETIME
-- Fecha Provable de Termino del Servicio
DECLARE @FechaTermino DATETIME
-- Situacion de revista del Agente. (De Plazas del Movimiento)
DECLARE @SitRev INT
-- Codigo de Nivel. (De la Cola de Movimientos)
DECLARE @Nivel INT
-- Codigo de Modalidad (De la Cola De Movimientos)
DECLARE @modalidad INT
-- Codigo de Zona (De la Cola de Movimientos)
DECLARE @zona INT
-- Codigo de Cargo Salarial (De la Cola de Movimientos)
DECLARE @cargosalarial INT
-- Horas. En funcion de si se toma de la Plaza o de la Cola.
DECLARE @cantidadhoras INT
-- Estado del Movimiento (Del la Cola de Movimientos) 
DECLARE @estado INT
-- Observaciones del Movimiento. (Del la Cola de Movimientos) 
DECLARE @observaciones VARCHAR(255)
-- Causa de Alta del Servicio. (De los Movimientos de Plaza) 
DECLARE @CausaAlta INT
-- Relacion Inter Servicios. (De la Cola de Movimientos de Plaza)
DECLARE @RelInterServicio INT
--Para obtener el servicio1 si hay que cargar la relacion INTer servicios
DECLARE @idServicio2 INT
--Para saber si se cargan las horas de la plaza o de la pantalla. (Movimientos de Plaza) 
DECLARE @horasdeplaza VARCHAR(1) 
-- Si hay que relacionar un servicio. (De Movimientos de Plaza)
DECLARE @ServicioARelacionar INT
-- Si la plaza es una cabecera de Paquete se toma el Tipo de Paquete. 
DECLARE @TipoDePaquete INT
-- Tipo de Servicio. En funcion del Tipo de Paquete.
DECLARE @TipoDeServicio INT
-- Si es un servicio Interino a Titularizar (Plazas de Movimiento)
DECLARE @ATitularizar VARCHAR(1)
-- Variable para guardar el ultimo Error
DECLARE @ErrorC INT
-- Asignatura. (De la Plaza)
DECLARE @Asignatura INT
-- S o N en funcion de @Fecha2
DECLARE @Baja VARCHAR(1)
-- Numero de Orden del Servicio para el Agente
DECLARE @NroOrden INT
-- Presupuesto que afecta el servicio. (De la Plaza)
DECLARE @Presupuesto INT
-- Regimen Salarial del servicio (De la Plaza)
DECLARE @RegimenSalarial INT
-- Regimen Laboral (De la Plaza)
DECLARE @RegimenLaboral INT
-- Regimen Designacion (De la Plaza)
DECLARE @RegimenDesigna INT
-- Organizacion (De la Plaza)
DECLARE @org INT
-- Sistema (Educativo o No Educativo). (De la Plaza)
DECLARE @Sistema INT
-- Codigo del Servicio Genreado.
DECLARE @idServicioAgente INT
-- Codigo del SubServicio Genreado
DECLARE @SubServ INT
-- Contador de Norma Temporal por Movimiento.
DECLARE @contador INT
-- Variable con la que se recorre el Cursor xPlazas
DECLARE @idPlaza INT
-- Para guardar la norma que se genera
DECLARE @NormaDeAlta INT
-- Para guardar el Codigo del Usuario Logeado
DECLARE @Usuario INT
-- Para almacenar la Norma de Baja (cuando correponde que sea igual a la norma de alta)
DECLARE @NormaBaja INT


DECLARE @ArmoCursor INT 


-- Variables de Causa Alta 8 
DECLARE @idServicioExtrasistema INT
DECLARE @LicenciaSerRel INT
DECLARE @ModalidadRel INT 
DECLARE @NivelRel INT 
DECLARE @idPlazaRel INT 
DECLARE @ZonaRel INT 


SELECT @ArmoCursor = 0 

--INICIALIZACION DE VARIABLES
SELECT @Error = 0, @ErrorC = 0, @NormaBaja = NULL


--Actualiza el contador del movimiento de alta
UPDATE tb_MovimientosDocentes SET contador = contador + 1, anio = YEAR(GETDATE()) WHERE idMovimiento = 1

SELECT @Error = @@Error
IF @Error <> 0
		GOTO SALIR


SELECT @contador = MAX(normatemporal)+1 FROM tb_SubServiciosAgentes
--insert INTo tb_Normas (descripcion, tipoNorma) 
--values ('Temp.'+CONVERT(VARCHAR, @contador)+'/'+CONVERT(VARCHAR, YEAR(GETDATE())), 1)
--SELECT @NormaAlta = 

SELECT @Usuario = IdUsuario FROM tb_Usuarios WHERE  NTUser = USER_NAME()

-- SE OBTIENEN LOS DATOS DEL MOVIMIENTO DE LA COLA.
SELECT @Agente = Agente, @Plaza = Plaza, @Fecha = Fecha, @Organizacion = Organizacion, @Responsable = Responsable, @Fecha1 = Fecha1,
@Fecha2 = Fecha2, @SitRev = SitRev, @Nivel = Nivel, @Modalidad = Modalidad, @Zona = Zona, @cargosalarial = cargosalarial, 
@cantidadhoras = cantidadhoras, @Estado = Estado, @Observaciones = observaciones, 
@FechaTermino = FechaTermino, @Baja = CASE WHEN fecha2 IS NULL THEN  'N' ELSE 'S' END
FROM tb_ColaDeMovimientos 
WHERE idCola = @idCola

-- SI EL ESTADO ES RECHAZADO, EJECUTADO O EJECUTADO FORZADO
IF @Estado = 2 or @Estado = 4 or @Estado = 5
BEGIN 
        SELECT @Error = 3
        GOTO SALIR
END 

-- Se obtiene la Norma del Movimiento
IF @AsignarNorma = 1
BEGIN
	INSERT tb_Normas SELECT CONVERT(VARCHAR, UltimaNorma) +'-'+ CONVERT(VARCHAR, YEAR(GETDATE())), 1, 0, NULL, GETDATE(), NULL, 1, 0, @Usuario FROM tb_MovimientosDocentes WHERE Mnemo = 'T'

	SELECT @Error = @@Error
	IF @Error <> 0
    		GOTO SALIR

	SELECT @NormaDeAlta = @@IDENTITY

	UPDATE tb_MovimientosDocentes SET UltimaNorma = UltimaNorma + 1 WHERE Mnemo = 'T'

	SELECT @Error = @@Error
	IF @Error <> 0
    		GOTO SALIR

	-- Si viene con fecha de baja corresponde la misma norma de baja que de alta.
	IF @Fecha2 IS NOT NULL
		SELECT @NormaBaja = @NormaDeAlta

END
ELSE
	SELECT @NormaDeAlta = NULL

-- SE ARMA EL CURSOR CON LOS MOVIMIENTOS DE LA COLA
SELECT @ArmoCursor = 1 

DECLARE CursorPlazas CURSOR  FORWARD_ONLY  READ_ONLY  FOR 
SELECT idPlaza, RelinterServicio, horasdeplaza FROM tb_PlazasDeMovimiento WHERE idCola = @idCola
OPEN CursorPlazas 

	FETCH NEXT FROM CursorPlazas INTO @idPlaza, @RelInterServicio, @horasdeplaza

		--MIENTRAS HAYA REGISTROS
	WHILE @@FETCH_STATUS = 0
		BEGIN
		
		-- SI EXISTE ALGUN SERVICIO ABIERTO CON EL AGENTE VACANTE  PARA LA PLAZA QUE SE PIENSA OCUPAR BAJAR EL SERVICIO VACANTE
		If EXISTS(SELECT * FROM tb_ServiciosAgentes S, tb_SubServiciosAgentes SS WHERE ServicioAgente = idServicioAgente AND Plaza = @idPlaza AND (Agente = 122304 Or Agente = 122828) AND S.FechaBaja Is Null) 
		BEGIN
			DECLARE @idServicioVancante INT, @idSubServicioVacante INT
			SELECT @idServicioVancante = idServicioAgente, @idSubServicioVacante = idSubServicio FROM tb_ServiciosAgentes S, tb_SubServiciosAgentes SS WHERE idServicioAgente = ServicioAgente AND Plaza = @idPlaza AND (Agente = 122304 Or Agente = 122828) AND S.FechaBaja Is Null
		
			DELETE FROM tb_SubServiciosAgentes WHERE idSubServicio = @idSubServicioVacante
			SELECT @Error = @@Error
			IF @Error <> 0
		    		GOTO SALIR


			DELETE FROM tb_ServiciosAgentes WHERE idServicioAgente = @idServicioVancante

			SELECT @Error = @@Error
			IF @Error <> 0
		    		GOTO SALIR

		END
		
		--SE OBTIENE LA CAUSA DE ALTA, EL SERVICIO A RELACIONAR Y A TITULARIZAR DEL MOVIMIENTO
		SELECT @CausaAlta = CausaAlta, @ServicioARelacionar = idServicioRelacionado, @ATitularizar=Titularizar FROM tb_PlazasDeMovimiento WHERE idCola = @idCola AND idPlaza = @idPlaza
		--SE OBTIENE LA ASIGNATURA CORRESPONDIENTE A LA PLAZA
		SELECT @Asignatura = Asignatura FROM tb_Plazas WHERE idPlaza = @idPlaza
		
		-- SI EXISTE ALGUN SERVICIO DEL AGENTE SE BUSCA EL MAXIMO NRO DE ORDEN... SI NO SE ESPECIFICA EL NUMERO 1
		SELECT @NroOrden = ISNULL(MAX(NroDeOrden9),1) FROM tb_ServiciosAgentes WHERE Agente = @Agente
		--IF EXISTS(SELECT * FROM tb_ServiciosAgentes WHERE Agente = @Agente)
		--	SELECT @NroOrden = (SELECT MAX(NroDeOrden99) FROM tb_ServiciosAgentes WHERE Agente = @Agente)+1
		--ELSE
		--	SELECT @NroOrden = 1
		
		-- SE OBTIENEN CAMPOS DE LA TABLA tb_PLAZAS
		SELECT @Presupuesto = Presupuesto, @RegimenSalarial = RegimenSalarial, @RegimenLaboral = RegimenLaboral, @RegimenDesigna = RegimenDesigna,
			@Org = Organizacion, @Sistema = Sistema
		FROM tb_Plazas WHERE IdPlaza = @IdPlaza
		
		SELECT @TipoDePaquete = TipoPaquete FROM tb_PaquetesDePlazas INNER JOIN tb_Plazas ON idPaquete = Paquete AND idPlaza = @idPlaza
		-- FALTA EL TIPO SECUENCIACION
		SELECT @TipoDeServicio = CASE @TipoDePaquete WHEN 4 THEN 1 WHEN  3 THEN 3 WHEN 1 THEN 3 ELSE 1 END
		
		-- SI DESDE LA PANTALLA SE ACLARA TOMAR LAS HORAS DE LA PLAZA, SE TOMA ESA CANTIDAD.
		IF @horasdeplaza = 'S'
			SELECT @CantidadHoras = horas FROM tb_Plazas WHERE idPlaza = @idPlaza
		
		-- SE CREA EL SERVICIO
		INSERT INTO tb_ServiciosAgentes (Agente, Asignatura, Baja, CargoSalarial, CausaAlta, ClavePSalarial, EstadoLiqExt, FechaAlta, FechaBaja, FechaTermino,
			Horas, Liquida, NroDeOrden9, Presupuesto, RegimenDesignacion, RegimenLaboral, RegimenSalarial, ServicioQueSuple, Sistema, SituacionRevista,
			TipoDeServicio, TipoDeFuncion, Finalidad, Financiamiento, UbicacionOrig, NormaAlta, NormaBaja, Vacante, ServicioLigado, CausaBaja, EstaEnProcesoDeTitularizacion) 
		VALUES (@Agente, @Asignatura, @Baja, @CargoSalarial, @CausaAlta, null, 1, @Fecha1, DATEADD(DAY,-1,@Fecha2), @FechaTermino, @cantidadhoras, 'S', @NroOrden,
			@Presupuesto, @RegimenDesigna, @RegimenLaboral, @RegimenSalarial, NULL, @Sistema, @SitRev, @TipoDeServicio,0, 12,1,@org, @NormaDeAlta, @NormaBaja, NULL, NULL, NULL, @Atitularizar)

		SELECT @Error = @@Error
		IF @Error <> 0
	    		GOTO SALIR

		SELECT @IdServicioAgente = @@IDENTITY 		

		-- SE INSERTA EL PRIMER SUBSERVICIO 
		INSERT INTO tb_SubServiciosAgentes (Baja, CodEnfermedad, EntidadCertificadora, EstadoLiqExt, FechaAlta, FechaBaja, FechaCertificado,
		FechaTermino, Licencia, Modalidad, Movimiento, Nivel, NormaFin, NormaInicio, NroCertificado, NroOrden9, Plaza, ServicioAgente, SituacionExtraordinaria,
		SituacionLaboral, TramiteAlta, TramiteBaja, Zona, NormaTemporal)	
		VALUES (@Baja, 0, 1, 1, @Fecha1, DATEADD(DAY,-1,@Fecha2), NULL, @FechaTermino, NULL, @Modalidad, 1,@Nivel, @NormaBaja, @NormaDeAlta, NULL, 1, @idPlaza, @idServicioAgente, 1,
		5, NULL, NULL, @Zona, @contador)
		
		SELECT @Error = @@Error
		IF @Error <> 0
	    		GOTO SALIR

		SELECT @SubServ = @@IDENTITY

		-- ALTA DE UN INCREMENTO DE HORAS
		IF @RelInterServicio = 5
		BEGIN
			-- Obtengo el Servicio para relacionarlo con el nuevo.
			SELECT @idServicio2 = MIN(ServicioAgente) FROM tb_SubServiciosAgentes S, tb_ServiciosAgentes SS
			WHERE idServicioAgente = ServicioAgente AND Plaza = @idPlaza AND Agente = @Agente AND S.FechaBaja IS NULL
		
			-- Actualizar RelacionInterServicio entre los servicios creados
			INSERT INTo tb_RelInterServicios (idServicio, idServicio2, TipoRelacion, Descriptor, Desde, Hasta, Baja, LicenciaUltSS)
			VALUES (@idServicioAgente, @idServicio2, 5, NULL, @fecha1, @fecha2, CASE @fecha2 WHEN NULL THEN  'N' ELSE 'S' END, NULL)

			SELECT @Error = @@Error
			IF @Error <> 0
		    		GOTO SALIR

		END
		
		-- Causa de Alta "Disignación por Transferencia"

		IF @CausaAlta = 8 AND @ServicioARelacionar <> -1 AND @ServicioARelacionar > 0
		BEGIN


			-- Al 08/03/2010 en la reunion con PD se definio que solo se dejaria bajar automaticamente a aquellos servicios cuya situacion fuera totalmente normal, por lo tanto el tema de 
			-- bajar aquellos servicios relacionados lo vamos a quitar. Esto estaria controlado por el SP de Chequeo

			/* -- Comentado	08/03/2010

			--Se da de baja el Servicio que se transfiere. Si es LE se baja el de base y el extrasistema.
			IF EXISTS (SELECT * FROM tb_RelInterServicios WHERE idservicio2 = @ServicioARelacionar)
			BEGIN

				---  OJO TENEMOS QUE MIRAR TODO ESTO EN TEORIA NO SE EJECUTA POR EL CONTROL EN EL CHEQUEAR


				SELECT @idServicioExtrasistema = idServicio FROM tb_RelInterServicios WHERE idServicio2 = @ServicioARelacionar
				-- Se bajan el SS y S EXTRASISTEMA
				UPDATE tb_SubServiciosAgentes SET baja = 'S', fechabaja = @fecha1, movimiento = 2 WHERE ServicioAgente = @idServicioExtrasistema AND fechabaja is null

				SELECT @Error = @@Error
				IF @Error <> 0
			    		GOTO SALIR

				UPDATE tb_ServiciosAgentes SET baja = 'S', fechabaja = @fecha1, causabaja = 7 WHERE idServicioAgente = @idServicioExtrasistema

				SELECT @Error = @@Error
				IF @Error <> 0
			    		GOTO SALIR


			END

			*/ -- Fin Comentado	08/03/2010
			

			
			-- Se bajan el SS y S de BASE
			-- 08-03-2010 Le cambiamos la manera en que guarda la fecha, ahora le restamos 1 dia


			SET @LicenciaSerRel = NULL

			IF EXISTS(SELECT * FROM Tb_ServiciosAgentes WHERE IdServicioAgente = @ServicioARelacionar AND FechaBaja IS NULL)

				BEGIN 

					IF EXISTS(SELECT * FROM Tb_SubServiciosAgentes WHERE Servicioagente = @ServicioARelacionar AND FechaBaja IS NULL AND Licencia IS NULL) 			
						BEGIN 	
							UPDATE Tb_SubServiciosAgentes SET Baja = 'S', FechaBaja = DATEADD(DAY, -1, @Fecha1) , Movimiento = 2  WHERE Servicioagente = @ServicioARelacionar AND FechaBaja IS NULL
							SELECT @Error = @@Error
							IF @Error <> 0
						    		GOTO Salir
						END
					ELSE 
						BEGIN 	
		
							SELECT @LicenciaSerRel = Licencia FROM Tb_SubServiciosAgentes WHERE Servicioagente = @ServicioARelacionar AND FechaBaja IS NULL 					
		
							SELECT  @ModalidadRel = SS.Modalidad, @NivelRel = SS.Nivel, @idPlazaRel = SS.Plaza, @ZonaRel = SS.Zona  FROM tb_SubServiciosAgentes SS WHERE Servicioagente = @ServicioARelacionar AND FechaBaja IS NULL 
		
		
							UPDATE Tb_SubServiciosAgentes SET Baja = 'S', FechaBaja = DATEADD(DAY, -1, @Fecha1)  WHERE Servicioagente = @ServicioARelacionar AND FechaBaja IS NULL
							SELECT @Error = @@Error
							IF @Error <> 0
						    		GOTO Salir
		
		
							-- Como el Servicio que estoy bajando tiene Licencia, el nuevo servicio debe comenzar tambien con licencia 
		
							UPDATE Tb_SubServiciosAgentes SET SituacionLaboral = 4,  Licencia = @LicenciaSerRel  WHERE IdSubServicio = @SubServ
							SELECT @Error = @@Error
							IF @Error <> 0
						    		GOTO Salir
					
							/*
							-- SE INSERTA EL ULTIMO SUBSERVICIO QUE DA LA BAJA  
							-- Esto lo quitamos porque Orlando decidio que cerrara el ultimo SS sobre la misma Licencia
		
							INSERT INTO tb_SubServiciosAgentes (Baja, CodEnfermedad, EntidadCertificadora, EstadoLiqExt, FechaAlta, FechaBaja, FechaCertificado,
							FechaTermino, Licencia, Modalidad, Movimiento, Nivel, NormaFin, NormaInicio, NroCertificado, NroOrden9, Plaza, ServicioAgente, SituacionExtraordinaria,
							SituacionLaboral, TramiteAlta, TramiteBaja, Zona, NormaTemporal)	
							VALUES ('S', 0, 1, 1, DATEADD(DAY, -1, @Fecha1) , DATEADD(DAY,-1,@Fecha1), NULL, NULL, NULL, @ModalidadRel, 2,@NivelRel, NULL, NULL, NULL , 1, @idPlazaRel, @ServicioARelacionar, 1,
							5, NULL, NULL, @ZonaRel, @contador)
						
							SELECT @Error = @@Error
							IF @Error <> 0
						    		GOTO Salir
		
							*/
							
						END
					
		
					--UPDATE Tb_ServiciosAgentes SET Baja = 'S', FechaBaja = @Fecha1, CausaBaja = 7 WHERE idServicioAgente = @ServicioARelacionar 
		
					-- 08-03-2010 - Le agregamos control por fechabaja is null para que no pise la fecha existente y acomodamos tambien que guarde como fecha de baja la fecha de alta
					-- del servicio que arranca -1 dia
		
					UPDATE Tb_ServiciosAgentes SET Baja = 'S', FechaBaja = DATEADD(DAY, -1, @Fecha1) , CausaBaja = 7 WHERE idServicioAgente = @ServicioARelacionar AND FechaBaja IS NULL 
		
					SELECT @Error = @@Error
					IF @Error <> 0
				    		GOTO Salir

					-- Se crea una relacion entre el nuevo servicio dado de alta y el servicio que tuvo la baja automatica, se guarda la fecha de alta y para la de baja debemos restarle 1 dia
					INSERT Tb_RelInterServicios SELECT @ServicioARelacionar, @IdServicioAgente, 4, 'Baja Automatica por  Alta por Transferencia  ', @Fecha1, 'N', NULL, @LicenciaSerRel
		
					SELECT @Error = @@Error
					IF @Error <> 0
				    		GOTO SALIR

				END 
			ELSE
				BEGIN 

					-- Se crea una relacion entre el nuevo servicio dado de alta y el servicio que tuvo la baja automatica, se guarda la fecha de alta y para la de baja debemos restarle 1 dia
					INSERT Tb_RelInterServicios SELECT @ServicioARelacionar, @IdServicioAgente, 4, 'Alta por Transferencia con Relacion a Baja Manual  ', @Fecha1, 'N', NULL, @LicenciaSerRel
		
					SELECT @Error = @@Error
					IF @Error <> 0
				    		GOTO SALIR

				END 
		

		END


		-- ACTUALIZAR REFERENCIA DEL DUEÑO ACTUAL....
		IF (@SitRev = 1 or @SitRev = 2) AND (@Fecha2 IS NULL)
		     BEGIN
			UPDATE P SET duenoactual = s.Agente, sitrevduenoactual = s.situacionrevista
				FROM tb_ServiciosAgentes s, tb_SubServiciosAgentes ss, tb_Plazas P
				WHERE ss.plaza = @idPlaza 
				AND ss.ServicioAgente = s.idServicioAgente
				AND (s.Situacionrevista = 1 or s.SituacionRevista = 2) 
				AND ss.fechabaja IS NULL 
				AND p.idplaza = ss.plaza


			SELECT @Error = @@Error
			IF @Error <> 0
		    		GOTO SALIR

		      END 			

		ELSE
		      BEGIN	
			UPDATE P SET P.ultimodocente = s.agente
				FROM tb_ServiciosAgentes s, tb_Plazas p, tb_SubServiciosagentes ss
				WHERE p.idPlaza = ss.Plaza 
				AND idPlaza = @idPlaza 
				AND ss.Servicioagente = s.idServicioagente 	AND s.FechaAlta = (SELECT MAX(S1.FechaAlta) FROM tb_ServiciosAgentes S1 INNER JOIN tb_SubServiciosAgentes SS1 ON S1.IdServicioAgente = SS1.ServicioAgente 
							WHERE Plaza = @IdPlaza AND SS1.FechaBaja IS NULL AND SituacionRevista NOT IN (1,2)) 

			SELECT @Error = @@Error
			IF @Error <> 0
		    		GOTO SALIR

		      END 		

		-- SE ACTUALIZA EL ESTADO DE LA COLA...
		UPDATE tb_ColaDeMovimientos SET Estado = CASE WHEN @EsForzado = 0 THEN 4 ELSE 5 END, NTUserEjecutor = SYSTEM_USER, FechaEjecucion = GETDATE()  WHERE idCola = @idCola

		SELECT @Error = @@Error
		IF @Error <> 0
	    		GOTO SALIR

		UPDATE tb_PlazasDeMovimiento SET servicio = @SubServ WHERE idCola = @idCola AND idPlaza = @idPlaza

		SELECT @Error = @@Error
		IF @Error <> 0
	    		GOTO SALIR


		
		--06/12/2007 se quito ya que se cambio la manera de obtener el lugar de pago de los conceptos 12,33 y 36
		/*
		--SI HAY QUE CARGARLES EL LUGAR DE COBRO DE CONCEPTOS DE LIQUIDACION
		IF EXISTS(SELECT top 1 IdOrganizaciones  FROM tb_Organizaciones WHERE IdOrganizaciones = @Org AND EsPrivada = 'S')
			AND NOT EXISTS(SELECT top 1 agente FROM tb_ConceptosDelAgentePorOrganizacion WHERE Agente = @Agente)
		BEGIN
			
			-- Se quito porque se cambio la manera de Calcular el Concepto 12 - Salario Familiar
			--INSERT INTO tb_ConceptosDelAgentePorOrganizacion (Agente, Organizacion, Concepto)  VALUES (@Agente, @Org, 12)
			
			--INSERT INTO tb_ConceptosDelAgentePorOrganizacion (Agente, Organizacion, Concepto) 	VALUES (@Agente, @Org, 33)
		END	
		
		*/


		FETCH NEXT FROM CursorPlazas INTO @idPlaza, @RelInterServicio, @horasdeplaza

	END

--CLOSE CursorPlazas
--DEALLOCATE CursorPlazas

SELECT @SubServicioDeLaNorma = @SubServ

SALIR:
IF @ArmoCursor = 1
  BEGIN 
	CLOSE CursorPlazas
	DEALLOCATE CursorPlazas
  END

-- SI NO HAY ERROR SE CONFIRMA LA TRANSACCION
IF @ERROR = 0
	COMMIT TRANSACTION EjecutarAltaServicio
ELSE
	ROLLBACK TRANSACTION EjecutarAltaServicio
GO
GRANT EXECUTE ON  [dbo].[paEjecutarAltasDeServicios] TO [PersonalDocente]
GO
